package com.chenfan.filestore.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.ccp.common.result.R;
import com.chenfan.ccp.plug.business.annotation.LogProperty;
import com.chenfan.ccp.plug.business.annotation.LogRecord;
import com.chenfan.filestore.dto.BatchExportTemplateDTO;
import com.chenfan.filestore.dto.BatchExportTemplateQueryDTO;
import com.chenfan.filestore.service.biz.BatchExportTemplateBiz;
import com.chenfan.filestore.vo.BatchExportTemplateVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author K
 * @date 2023/4/26 5:18 PM
 */
@RestController
@RequestMapping("/batch/export/template")
public class BatchExportTemplateController {

    @Autowired
    private BatchExportTemplateBiz batchExportTemplateBiz;

    /**
     * 分页查询
     * @param query 参数
     * @return
     */
    @PostMapping("/page")
    public R<Page<BatchExportTemplateVO>> pageBatchExportTemplate(@RequestBody BatchExportTemplateQueryDTO query) {
        return R.ok(batchExportTemplateBiz.pageBatchExportTemplate(query));
    }

    /**
     * 创建导入模板
     * @param batchExportTemplateDTO 参数
     * @return
     */
    @LogRecord(bizType = "420005", actionName = "导出模板新增", recordFields = {
            @LogProperty(field = "导出模板新增", afterValue = "导出模板新增", subBizNo = "#batchExportTemplateDTO.templateId")
    })
    @PostMapping("")
    public R<String> createBatchExportTemplate(@RequestBody BatchExportTemplateDTO batchExportTemplateDTO) {
        Long templateId = batchExportTemplateBiz.createBatchExportTemplate(batchExportTemplateDTO);
        batchExportTemplateDTO.setTemplateId(templateId);
        return R.ok(templateId.toString());
    }

    /**
     * 更新模板id
     * @param templateId 模板id
     * @param batchExportTemplateDTO 参数
     * @return
     */
    @LogRecord(bizType = "420005", actionName = "导出模板更新", recordFields = {
            @LogProperty(field = "导出模板更新", afterValue = "导出模板更新", subBizNo = "#templateId")
    })
    @PutMapping("{templateId}")
    public R<Void> updateBatchExportTemplate(
            @PathVariable Long templateId,
            @RequestBody BatchExportTemplateDTO batchExportTemplateDTO) {
        batchExportTemplateDTO.setTemplateId(templateId);
        batchExportTemplateBiz.updateBatchExportTemplate(batchExportTemplateDTO);
        return R.ok();
    }

    /**
     * 模板id
     * @param templateId 模板id
     * @return
     */
    @GetMapping("{templateId}")
    public R<BatchExportTemplateVO> getBatchExportTemplate(@PathVariable Long templateId) {
        return R.ok(batchExportTemplateBiz.getBatchExportTemplate(templateId));
    }

    /**
     * 更改状态
     * @param templateId 模板id
     * @param status 状态
     * @return
     */
    @PutMapping("{templateId}/status")
    public R<Void> switchStatus(
            @PathVariable Long templateId, Integer status) {
        batchExportTemplateBiz.switchStatus(templateId, status);
        return R.ok();
    }
}
